今天 PHP 5.4.0 剛釋出,分享一下手動安裝到 windows 的步驟。
雖然有一大堆三合一(Apache+MySQL+PHP)、多合一的套件可以直接下載來用,不過搭配的版本總是,不是這個太舊就是那個太舊,所以還是自己一個一個安裝比較快。
不過又不想要官方包好的安裝檔,不知道在系統留了什麼什麼東西,因此可以拿到免安裝檔,通常就用免安裝檔,如果要升級,直接砍掉舊的,換成新的即可。
安裝目錄:C:\LAMP (若不想裝到此處,以下步驟請自行更改)
一、下載 apache 2.4.1 windows 版,並解壓到 C:\LAMP。(出現 C:\LAMP\Apache24)
http://www.apachelounge.com/download/VC10/win32/bins/httpd-2.4.1-win32-VC10.zip
二、下載 php 5.4.0 windows 版,並解壓到 C:\LAMP\php-5.4。
http://windows.php.net/downloads/releases/php-5.4.0-Win32-VC9-x86.zip
三、下載 apache 之 php module,並解壓到 C:\LAMP\php-5.4
http://www.apachelounge.com/download/mods/php5apache2_4.dll-php-5.4-win32.zip
四、編輯 C:\LAMP\Apache24\conf\httpd.conf
37c37
< ServerRoot "c:/Apache24"
---
> ServerRoot "C:/LAMP/Apache24"
72,73c72,73
< LoadModule access_compat_module modules/mod_access_compat.so
< LoadModule actions_module modules/mod_actions.so
---
> #LoadModule access_compat_module modules/mod_access_compat.so
> #LoadModule actions_module modules/mod_actions.so
76,77c76,77
< LoadModule asis_module modules/mod_asis.so
< LoadModule auth_basic_module modules/mod_auth_basic.so
---
> #LoadModule asis_module modules/mod_asis.so
> #LoadModule auth_basic_module modules/mod_auth_basic.so
80c80
< LoadModule authn_core_module modules/mod_authn_core.so
---
> #LoadModule authn_core_module modules/mod_authn_core.so
83c83
< LoadModule authn_file_module modules/mod_authn_file.so
---
> #LoadModule authn_file_module modules/mod_authn_file.so
89c89
< LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
---
> #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
92c92
< LoadModule authz_user_module modules/mod_authz_user.so
---
> #LoadModule authz_user_module modules/mod_authz_user.so
98c98
< LoadModule cgi_module modules/mod_cgi.so
---
> #LoadModule cgi_module modules/mod_cgi.so
105c105
< #LoadModule deflate_module modules/mod_deflate.so
---
> LoadModule deflate_module modules/mod_deflate.so
108,109c108,109
< LoadModule env_module modules/mod_env.so
< #LoadModule expires_module modules/mod_expires.so
---
> #LoadModule env_module modules/mod_env.so
> LoadModule expires_module modules/mod_expires.so
113c113
< #LoadModule headers_module modules/mod_headers.so
---
> LoadModule headers_module modules/mod_headers.so
118c118
< LoadModule include_module modules/mod_include.so
---
> #LoadModule include_module modules/mod_include.so
120c120
< LoadModule isapi_module modules/mod_isapi.so
---
> #LoadModule isapi_module modules/mod_isapi.so
133c133
< LoadModule negotiation_module modules/mod_negotiation.so
---
> #LoadModule negotiation_module modules/mod_negotiation.so
171a172,176
> LoadModule php5_module "C:/LAMP/php-5.4/php5apache2_4.dll"
> AddHandler application/x-httpd-php .php
>
> # configure the path to php.ini
> PHPIniDir "C:/LAMP/php-5.4"
224a230,234
> <IfModule mod_allowmethods>
> <Location />
> AllowMethods GET POST OPTIONS
> </Location>
> </IfModule>
237,238c247,248
< DocumentRoot "c:/Apache24/htdocs"
< <Directory "c:/Apache24/htdocs">
---
> DocumentRoot "c:/LAMP/Apache24/htdocs"
> <Directory "c:/LAMP/Apache24/htdocs">
251c261
< Options Indexes FollowSymLinks
---
> Options FollowSymLinks
271c281
< DirectoryIndex index.html
---
> DirectoryIndex index.php index.htm index.html
370,374c380,384
< <Directory "c:/Apache24/cgi-bin">
< AllowOverride None
< Options None
< Require all granted
< </Directory>
---
> #<Directory "c:/Apache24/cgi-bin">
> # AllowOverride None
> # Options None
> # Require all granted
> #</Directory>
469c479
< #Include conf/extra/httpd-mpm.conf
---
> Include conf/extra/httpd-mpm.conf
496c506
< #Include conf/extra/httpd-default.conf
---
> Include conf/extra/httpd-default.conf
五、複製一份 C:\LAMP\php-5.4\php.ini-development 為 C:\LAMP\php-5.4\php.ini (如果不想保留原始檔,直接改名也行。)。
六、編輯 C:\LAMP\php-5.4\php.ini
375c375
< expose_php = On
---
> expose_php = Off
461c461
< error_reporting = E_ALL
---
> error_reporting = E_ALL & ~E_NOTICE
730c730
< ; extension_dir = "ext"
---
> extension_dir = "C:\LAMP\php-5.4\ext"
736c736
< enable_dl = Off
---
> enable_dl = On
763c763
< ;cgi.fix_pathinfo=1
---
> cgi.fix_pathinfo=1
869c869
< ;extension=php_curl.dll
---
> extension=php_curl.dll
871,872c871,872
< ;extension=php_gd2.dll
< ;extension=php_gettext.dll
---
> extension=php_gd2.dll
> extension=php_gettext.dll
878c878,879
< ;extension=php_mbstring.dll
---
> extension=php_mbstring.dll
884c885
< ;extension=php_openssl.dll
---
> extension=php_openssl.dll
886c887
< ;extension=php_pdo_mysql.dll
---
> extension=php_pdo_mysql.dll
899,900c900,901
< ;extension=php_soap.dll
< ;extension=php_sockets.dll
---
> extension=php_soap.dll
> extension=php_sockets.dll
920c921
< ;date.timezone =
---
> date.timezone = "Asia/Taipei"
七、開命令列視窗,cd 到 C:\LAMP\Apache24\bin 目錄,下此命令將 apache 註冊為系統服務:
httpd -k install
八、在 C:\LAMP\Apache24\htdocs 目錄中,放一支 info.php 檔,內容如下:
<?php
phpinfo();
?>
九、以下列命令啟動 apache:『net start apache2.4』再開瀏覽器試連『http://127.0.0.1/info.php』
Apache 的模組只有掛上這些必要的模組:
mod_alias
mod_allowmethods
mod_authz_core
mod_authz_host
mod_autoindex
mod_deflate
mod_dir
mod_expires
mod_headers
mod_log_config
mod_mime
mod_setenvif
mod_php5
如果要加認證或SSL,請自行添加。PHP 模組則加掛
php_curl.dll
php_gd2.dll
php_gettext.dll
php_mbstring.dll
php_openssl.dll
php_pdo_mysql.dll
php_soap.dll
php_sockets.dll
其中 MySQL 與 MySQLi 都沒掛,而換新的 PDO_MySQL,有需要的人請自行加掛。
我的apache friends
XAMPP 1.7.7 是 [PHP: 5.3.8]。
PHP: 5.3.8 都已經好舊了,5.3 版已經到 5.3.10 了。
等那些什麼幾合一的軟體更新會等到天荒地老,還不如自己動手各別裝最新版。
版大,
請教您, 這個可以用在internet 做公開的伺服器, 讓其他的電腦在網址列輸入網址, 或ip, 就連上網站嗎?
版大,
請教您, 這個可以用在internet 做公開的伺服器, 讓其他的電腦在網址列輸入網址, 或ip, 就連上網站嗎?
(不好意思, 我剛註冊, 還沒摸清楚怎麼操作, 剛才留言好像留錯地方, 抱歉.)
當然可以。只要你安裝的電腦可以讓 internet 上的電腦連到,不管是具有實際 IP 或是用 NAT 穿進內網都行。
wiseguy提到:
< ServerRoot "c:/Apache24"ServerRoot "C:/LAMP/Apache24"
版大,
不好意思, 您可以把如何編輯httpd.conf 做詳細一點的說明嗎?
藍色字是什麼意思?
您不是把 apache 解壓縮到 c:\LAMP\apache24 嗎? 為什麼 httpd.conf 裏變成 c:/apache24?
藍色字只是 IT幫的程式碼框做的字串標示,你只要照著修改就好了。
因為我是用 diff 語法寫出修改的地方。會使用 patch 的人把它存成 patch 檔就可以用 patch 迅速代換。如果你要手動修改,那就是把開頭是 < 的行,改成 > 的內容就是了。
Apache 是從 Linux/Unix 平台來的,所以 \ 對它而言是跳脫字元,不是目錄分隔。因此要在設定檔中寫成 / 它才看得懂。
wise大,
感謝您指點.
我來試試看.
版大,
方便請教您其他問題嗎?
我有固定 ip, 我的網址也已指向我的 ip, 但架好 server 後, 網路上要連到我的 server 只能用 ip 連進來, 用網址就無法連進來, 請教您, 問題出在哪裏?
(我的電腦是windows7, server 是用 AppSer 套件安裝的.)
你確定你的網域名,有指到正確的 IP 了嗎?
用 nslookup 命令查詢你的網域名是不是就是你的 IP。
版大,
感謝您回應.
請問, 是要在命令提示字元下打nslookup 嗎?
若是, 我得到的回應是:
預設伺服器: hntp1.hinet.net
Adress: xxx.xx.xxx.xx
很奇怪, 兩者即不是我的網域名, 也不是我現在所設定的連線ip.
我的網域在亞太註冊, 網域和ip設定的畫面如連結中的圖, 麻煩版大您再幫我看看哪裏出問題, 好嗎? [/img]https://lh6.googleusercontent.com/-wl7oilffbUk/UNZPEXjKjWI/AAAAAAAAA1s/n46W9qVxP64/s720/phein.jpg[/img]
那個連結不知有沒辦法正常開啓. 我再補充說明, 我設定好已幾天了, 也有打電話去和亞太的客服問過, 他們說已設定好了. 我設定的是:
Domain Name Server Ip Adress
dns1.xxx.com.tw xxx.xxx.xx.xx
dns.xxx.com.tw xxx.xxx.xx.xx
這次我打防火牆的 port80 打開(沒有持續開, 要試連結時才開. 剛才試 nslookup 時沒有開), 再試的結果如下:
220.134.42.43
伺服哭: hntp1.hinet.net
Adress: 168.95.192.1
名稱 220-134-42-43.HINET-IP.hinet.net
Adress:220.134.42.43
phein.com.tw
伺服哭: hntp1.hinet.net
Adress: 168.95.192.1
DNS request timed out.
timeout was 2 seconds.
.........
*** 對 hntpt.hinet.net 的要求逾時.
=======================================
所以, 意思是我的url沒和ip對應好嗎?
請教版大: 可能還有哪些地方我沒設定到?
你設錯了
DNS 有兩種設定法,第一種是直接請 ISP 幫你解,你要直接設定你想解的名稱,比如
phein.com.tw 1.1.1.1
www.phein.com.tw 1.1.1.2
不過 ISP 通常只給設 3~5 個。
第二種是自己架設 DNS,也就是請 ISP 在接到有查詢 *.phein.com.tw 的時候,轉給你的 DNS 回答。你自己的 DNS 就要負責回應 www.phein.com.tw 是哪一台,email.phein.com.tw 是哪一台。這好處是可以設定無限多的網域名。
現在,你的問題出在,你似乎設定了第二種,但是卻沒有自己架設 DNS,所以查詢等到 timeout 了。
你可以把設定切換到第一種模式,把名稱 dns1.phein.com.tw 換成 phein.com.tw,dns.phein.com.tw 換成 www.phein.com.tw,再試試看,應該就可以連了。(phein.com.tw 或 www.phein.com.tw 都可以連)
版大,
真的很感謝您願意花時間詳細回覆我的問題.
感恩! 感恩!
版大,
不好意思, 再來請教您.
我現在安裝的apache, 它都會自動安裝成 "localhost", 進到phpMyAdmin 後, 顯示的伺服器資訊是 "伺服器: localhost via TCP/IP", 有沒有辦法讓它安裝在我的ip下? 例如 "伺服器: 220.134.42.43 via TCP/IP?
在 apache 的設定裡面加一條
ServerName 220.134.42.43
重新啟動 apache 就好了
版大,
感謝您不吝指點.
版大, 不好意思, 再來打攪您.
很奇怪, 我怎麼試都不行.
我去Godaddy https://www.godaddy.com/ 由請了免費DNS, 然後在上面增加了一個 Domain, 一個sub Domain. 我填的明細如下:
Host Name: phein.com.tw Point to Ip: 220.134.42.43
Host Name: en.phein.com.tw Point to Ip: 220.134.42.43
結果:
www.phein.com.tw 無論如何都不能連, 而 en.phein.com.tw 卻可以連進來. 但卻是連到根目錄.
ping phein.com.tw 的結果則是:
伺服器: phein.com.tw
Adress: 220.134.42.43
ping en.phein.com.tw 的結果也一樣.
您幫我看看問題出在哪裏好嗎?
您幫我看看
你還是在用第二種方式。
第二種方式我有試過, 不行.
現在改成給亞太電信託管 DNS, 正在等設定生效. (本來以為給他們託管要另外收費, 所以沒勾這個選項).
版大, 感謝您不厭其煩的回覆我一個又一個的問題.
謝謝.
版大, 不好意思, 我又來了.
很奇怪, 還是不行.
http://www.phein.com.tw 不能連結, 而http://en.phein.com.tw 可以連結.
ping phein.com.tw , 回應如下:
ping phein.com.tw [220.134.42.43]<使用32位元組的資料>:
回覆自 220.134.42.43 位元組=32 time<1ms TTL=128
.....
而
nslookup
預設伺服器 hntp1.hinet.net
Adress: 168.95.192.1
意思是我的預設伺服器要去改嗎?
請問要從哪裏去改?
www 查不到,en 查得到,當然 www 不能連,en 可以連。你給亞太電信託管又是怎麼設定的?
版大,
看您這個畫面, 我大概知道我錯在哪裏了.
我申請託管的畫面是:
我看上面說 "不設定主機名稱時,Host欄位請留空白,只填寫IP Address即可", 我想我domain name 是跟他們註冊的, 不必再設定主機名稱, 所以第一個空格我就留空白, 只填後面的ip. 難道就是錯在這裏嗎? 那個空格必須填上 "www" ? 我這就去加上 "www".
版大, 感謝您! 感謝您.
版大,
一定要特地來向您道謝, 感謝您這麼善心, 願意在網路上為素昧平生的路人甲提供協助.
在您耐心且細心的解說之下, 我得以終結多日來的網路連線摸索, 我的網址,ip,伺服器終於成功連結在一起了.
不必客氣啦~ 能夠虛心請教,都能夠得到眾人的協助的。
哇~大師傾力相助+後輩努力學習
這世界真美好
大部份 IT 邦友們都是懷著一個助人的心,來這裡想跟大家分享一些工作心得與技巧,希望大家都能愉快地勝任工作,有個美好的 IT 人生。所以只要是肯學習、懷虛心的發問,我相信不管是誰都願意助一臂之力的。
憑良心說, 版大真的是我在網路上所遇到, 最熱心, 最有耐心地在幫助生手的一位好人. 雖然其他網友也有不少人願意分享, 願意助人, 但像版大這麼有耐心的, 我還是第一次遇到.
ps. to bigcandy: "大師傾力相助+加後輩努力學習" ==> 如是! 如是! 只不過我這個 "後輩", 是個 "歐巴桑後輩". 哈哈.
正所謂
「鋼鐵的外表下包覆著柔軟的佛心」
糟糕,
版大, 對不起, 我想刪除我最後貼的那三則, 另外重新貼最新的狀況, 沒想到一刪, 把整個討論刪掉了. 連您的回覆也刪掉了.
對不起, sorry.
你要把兩個站台的 DocumentRoot 寫出完整目錄,例如:
DocumentRoot "C:/AppServ/www/kiyui"
DocumentRoot "C:/AppServ/www/phein"
至於原本在 httpd.conf 裡面的那行可以不必理會,那是你 <VirtualHost> 裡面沒寫的時候才會去看的預設值。
感謝版大
(sorry, 我貼出了下面那一則之後, 才看到您這一則回應.)
DocumentRoot 後面的目錄, 我試過好幾個不同的樣子, 都不管用.
"C:/AppServ/www/kiyui" 我有試過, 不可以.
也就是下面這樣, 不可以. "糟糕!Internet Explorer 無法連線至 www.phein.com.tw"
<VirtualHost *>
ServerAdmin seroct@gmail.com
DocumentRoot " C:/AppServ/www/phein"
ServerName www.phein.com.tw
ErrorLog "logs/www.phein.com.tw.log"
CustomLog "logs/www.phein.com.tw.log" common
<Location />
Order deny,allow
</Location>
</VirtualHost>
<VirtualHost *>
ServerAdmin seroct@gmail.com
DocumentRoot "C:/AppServ/www/kiyui"
ServerName www.kiyui.com.tw
ErrorLog "logs/www.kiyui.com.tw.log"
CustomLog "logs/www.kiyui.com.tw.log" common
<Location />
Order deny,allow
</Location>
</VirtualHost>
ps.
版大,
我現在是在windows7上面架網站. 等所有問題解決後, 我真正要架的的電腦是server2003的平台
請問在server2003架設, 設定過程會有不同嗎?
(那是恩人的電. 欠人恩情, 我撞破頭也必須去報恩, 幫恩人架好伺服器.)
ps2
sorry, 第二則留言請作廢.
(我無法刪除它)
耶~~~
成功了
我把DocumentRoot 改成這樣 "/AppServ/www/phein", 就成了.
版大, 謝謝您唷
oct2005提到:
DocumentRoot " C:/AppServ/www/phein"
你多打了一個空白在 " 跟 C 之間吧?
雖然省略 C: 也可以,不過省略的話,apache 就會當做是它安裝的磁碟。萬一你是把 wordpress 放在 D: 時就又不 OK 了。瞭解嗎?
對哦! 安裝到D就不行了.
感謝網大提點.
不過我記得我並沒有多放一個空白.
我後來是乾脆把設定virtual host 那幾行字搬到httpd.conf, 然後把 httpd.conf 裏那行 "Include xxxx... " 那行前面的"#"再加回去. 然後把C:拿掉, 結果就瞎貓抓到死老鼠, 可以了.
現在變成我打 "http://www.phein.com.tw/phpMyAdmin" , 它沒辦法連結. 因為phpMyAdmin 在 C:/AppServ/www 之下. 天啊! 這是要怎麼辦?
版大,
請問我是不是必須在phein 和 kiyui 之下各別安裝 phpMyAdmin?
一個apache 伺服器, 可以安裝兩個 phpMyAdmin 嗎?
版大, 怎麼辦
我當初是用AppServ 自動安裝, 現在若要我另外安裝 phpMyAdmin, 我不知該如何安裝耶.
在網路上找了老半天, 也不知該下載哪一個.
很奇怪, 真正在朋友的電腦安裝時, 怎麼連都連在同一個目錄, 不然就是跳出一個訊息, 說 "....overlap...". 在這個問題上撞到頭破血流, 不知如何解.
剛才總算在網路上找到似乎可解的答案, 順便貼在這裏分享給跟我遇到同樣問題的人參考.
http://www.wretch.cc/blog/chuhsi0804/18904047
(我自己還沒試, 看到, 先po上來, 免得過些時給忘了)
很久沒用windows裝apache了
原本在找apache載點
看到這篇
沒想有兩萬的觀看,滿厲害的
目前linux已經到apache 2.4+ PHP 6了
雖然windows很多包裝停滯2.2不前進卻很久了
但是wampserver已經開始用2.4一陣子了
要更新版本的應該看這篇
http://ithelp.ithome.com.tw/question/10146835